var express = require('express');
const fs = require('fs');
const mongoose = require('mongoose');

var { formidable } = require("formidable");

// 随机字符串
const random = require('string-random');
var router = express.Router();
// 请求路由
const FriendModel = require('../models/FriendModel');
const UserModel = require('../models/UserModel');

// 返回格式
const BizResult = require("../config/BizResult");
// 密码加密
const bcrypt = require('../utils/bcrypt');
// 生成token
const JwtUtil = require('../utils/jwt');

// 解析请求体的中间件
const bodyParser = require('body-parser');
// 解析 querystring 格式请求体的中间件 【url编码】
let urlParser = bodyParser.urlencoded({ extended: false });
// 解析 JSON 格式请求体的中间件
let jsonParser = bodyParser.json();

/* 查询用户的好友列表 */
router.get('/list', jsonParser, function (req, res, next) {
  const { userId, keyword, phone } = req.query;
  // UserModel.aggregate([
  //   {
  //     $lookup: {
  //       from: "friend", // 要关联的集合名
  //       localField: "_id", // a表中的字段名
  //       foreignField: "user_id", // b表中对应的关联字段名
  //       as: "friendList" // 将结果保存到当前文档的一个新字段下
  //     }
  //   },
  // ]).then((data, err) => {
  //   if (err) return res.send(BizResult.fail(err));
  //   res.send(BizResult.success(data));
  // })
  //   console.log(UserModel);
  //   console.log(FriendModel)

  UserModel.find({
    _id: { $ne: userId }
  }).then(async (data, err) => {
    if (err) return res.send(BizResult.fail(err));
    (async () => {
      let arr = JSON.parse(JSON.stringify(data))
      const friendPromises = arr.map(async (item) => {
        const friend = await FriendModel.findOne({
          $or: [
            {
              user_id: userId,
              friend_id: item._id
            },
            {
              user_id: item._id,
              friend_id: userId
            },
          ]

        });
        item.isFriend = !!friend; // 如果有匹配的文档，则设置为true，否则false
        return item;
      });

      const updatedItems = await Promise.all(friendPromises);
      res.send(BizResult.success(updatedItems));
    })();
  })
});

// 添加好友
router.post('/addFriend', urlParser, function (req, res, next) {
  const { userId, friendId, phone } = req.body;

  FriendModel.create({
    user_id: userId,
    friend_id: friendId,
    friend_phone: phone,
    creationTime: new Date(),
  }).then((data, err) => {
    if (err) return res.send(BizResult.fail(err));
    res.send(BizResult.success('添加成功'));
  })
});



module.exports = router;
